function School(doc, container, width, height, user, date, options, data) {
  this._doc = doc;
  this._container = container;
  this._width = width;
  this._height = height;
  this._user = user;
  this._date = date;
  this._options = options;
  this._data = data;
  
  this._unique = MiscUtils.unique();
  this._createElements();
  this._gui = AbsSchool.gui(this._unique);
};

School.prototype._createElements = function() {
  var table, tr, td, input, itable, itr, itd;
  
  this._container.align = 'left';
  
  table = document.createElement('table');
  table.cellPadding = 0;
  table.cellSpacing = 0;
  table.style.padding = '10px 0';
  table.style.color = '#17183e';
  table.style.fontSize = '10pt';
  this._container.appendChild(table);
  
  tr = table.insertRow(-1);
  td = tr.insertCell(-1);
  td.style.verticalAlign = 'top';
  
  itable = document.createElement('table');
  itable.cellPadding = 0;
  itable.cellSpacing = 0;
  itable.style.fontWeight = 'bold';
  td.appendChild(itable);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.width = '120px';
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('School Name'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_school_name_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Course Name'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_course_name_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Course Level'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_course_level_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Course Start Date'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_course_date_start_date';
  itd.appendChild(input);
  
  td = tr.insertCell(-1);
  td.style.verticalAlign = 'top';
  
  itable = document.createElement('table');
  itable.cellPadding = 0;
  itable.cellSpacing = 0;
  itable.style.fontWeight = 'bold';
  td.appendChild(itable);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.width = '250px';
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Amount Paid'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_amount_paid_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('No. of Papers (diploma)'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_paper_num_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Length of English Course (weeks)'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_english_weeks_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Length of Other Course'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_other_course_length_text';
  itd.appendChild(input);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.appendChild(document.createTextNode('Expected Next Payment Date'));
  itd = itr.insertCell(-1);
  input = document.createElement('input');
  input.type = 'text';
  input.style.width = '260px';
  input.id = this._unique + '_next_payment_date_date';
  itd.appendChild(input);
  
  tr = table.insertRow(-1);
  td = tr.insertCell(-1);
  td.style.verticalAlign = 'top';
  td.colSpan = 2;
  
  itable = document.createElement('table');
  itable.cellPadding = 0;
  itable.cellSpacing = 0;
  itable.style.margin = '15px 0 0 0';
  itable.style.fontWeight = 'bold';
  td.appendChild(itable);
  
  itr = itable.insertRow(-1);
  itd = itr.insertCell(-1);
  itd.style.width = '120px';
  itd.style.padding = '6px 10px';
  itd.style.textAlign = 'right';
  itd.style.verticalAlign = 'top';
  itd.appendChild(document.createTextNode('File Note'));
  itd = itr.insertCell(-1);
  input = document.createElement('textarea');
  input.style.width = '800px';
  input.rows = 12;
  input.id = this._unique + '_file_note_text';
  itd.appendChild(input);
  
  var mode = (this._options && this._options.mode) ? this._options.mode : null;
  tr = table.insertRow(-1);
  tr.style.display = (mode == Constant.SCHOOL_MODE_PLUS) ? 'none' : 'table-row';
  td = tr.insertCell(-1);
  td.colSpan = 2;
  td.style.verticalAlign = 'top';
  td.style.textAlign = 'right';
  input = document.createElement('input');
  input.type = 'submit';
  input.value = 'Save';
  input.id = this._unique + '_save_btn';
  input.className = 'button';
  td.appendChild(input);
  
  input = document.createElement('input');
  input.type = 'submit';
  input.value = 'Cancel';
  input.style.margin = '20px 20px 20px 2px';
  input.id = this._unique + '_cancel_btn';
  input.className = 'button';
  td.appendChild(input);
};